/*
 * NodoArbol.h
 *
 *  Created on: 21/04/2011
 *      Author: Casa
 */

#ifndef NODOARBOL_H_
#define NODOARBOL_H_

#include <iostream>
#include "estructuras/storePalabras/StorePalabras.h"
#include "estructuras/storePalabras/ocurrencia/Ocurrencia.h"
#include "estructuras/lista/Lista.h"
#include "estructuras/storePalabras/contador/Contador.h"
using namespace std;

class NodoArbol {
private:
	char clave; //dato
	int FB; // factor de balance
	int ocurrenciasPalabra;
	bool esValor;
	NodoArbol *izq, *der; // hijo derecho
	StorePalabras *hijos; // hijo izquierdo
  //  void sumarOcurrencia(Valor const & valor);
   // void recolectarOcurrencias(Contador & ocurrencias);
    char getClave(string const & palabra);
    string getAsSubValor(string const & palabra);
public:
    NodoArbol(string &);
    virtual ~NodoArbol();
    void insertar(string &);
    bool esTuyo(string const &palabra);
    void addOcurrencias(string & palabra, int ocurrencias);
	Lista<string> getValoresOrdenados();
	Lista<Contador> getValoresOrdenadosContador();
	NodoArbol* getIzq();
	NodoArbol* getDer();
	char getKey();
	int getOcurrencias(string &);
	int getFactorBalance();
	void setIzq(NodoArbol*);
	void setDer(NodoArbol*);
	void setFactorBalance(int);


};

#endif /* NODO_H_ */
